Video decompression, or the process of reconstructing a compressed video stream, requires many different software (SW) algorithms and hardware (HW) components. At a high level, the HW components used to reconstruct Variable Length Coded (VLC) compressed video are very similar across different standard video codecs. One such HW component, the Variable Length Decode (VLD) component, parses an incoming video data bitstream including both VLC encoded data and unencoded data to extract VLC codes and other information needed to reconstruct the video data from the bitstream. Most VLD components parse the bitstream using an N bits at a time (Nbaat) scheme to accelerate the decode process.
Typical VLD components also use Look Up Tables (LUTs) to enhance performance. The LUTs index those VLC encoded symbols that are most likely to be encountered. However, to keep LUT sizes manageable and thus hardware costs down, rarer symbols are represented by escape codes rather than LUT indices. When a typical VLD component encounters an escape code it breaks from the Nbaat bitstream parsing flow while the associated symbol is reconstructed using SW routines. However, breaking the Nbaat flow like this dramatically increases the time required for the VLD component to process the incoming compressed bitstream.